home *** CD-ROM | disk | FTP | other *** search
/ Tech Arsenal 1 / Tech Arsenal (Arsenal Computer).ISO / tek-01 / snip0493.zip / POSIX_LS.C < prev    next >
C/C++ Source or Header  |  1993-04-05  |  3KB  |  84 lines

  1. /*
  2. **  POSIX_LS.C - Directory lister using POSIX style processing
  3. **
  4. **  Original Copyright 1988-1991 by Bob Stout as part of
  5. **  the MicroFirm Function Library (MFL)
  6. **
  7. **  This subset version is functionally identical to the
  8. **  version originally published by the author in Tech Specialist
  9. **  magazine and is hereby donated to the public domain.
  10. */
  11.  
  12. #include <stdio.h>
  13. #include "dirent.h"
  14.  
  15. #define SUCCESS 0
  16.  
  17. void dumpdir(char *dirname, char *mask)
  18. {
  19.       DOS_DIR *dirp;
  20.       struct DSTRUCT *dstruct;
  21.  
  22.       dirp = opendir(dirname);
  23.       if (!dirp)
  24.       {
  25.             printf("Opening %s returned NULL\n\n", dirname);
  26.             return;
  27.       }
  28.       printf("Dir %s has %d entries\n", dirname, dirp->dd_size);
  29.       do
  30.       {
  31.             if (NULL != (dstruct = readdir(dirp)))
  32.             {
  33.                   if (SUCCESS == dirmask(dstruct, mask, NULL, FA_ANY, 0))
  34.                         printf("%3d - %s\n", dirp->dd_loc, dstruct->NAME);
  35.             }
  36.             else  puts("EOF\n");
  37.       } while (dstruct);
  38.       printf("seekdir( -1) returned %p\n", seekdir(dirp, -1, SEEK_SET));
  39.       printf("seekdir(999) returned %p\n", seekdir(dirp, 999, SEEK_SET));
  40.       printf("seekdir(0, SEEK_SET) returned %p\n", dstruct = seekdir(dirp,
  41.             0, SEEK_SET));
  42.       printf("%3d - %s\n", dirp->dd_loc, dstruct->NAME);
  43.       printf("seekdir(1, SEEK_SET) returned %p\n", dstruct = seekdir(dirp,
  44.             1, SEEK_SET));
  45.       printf("%3d - %s\n", dirp->dd_loc, dstruct->NAME);
  46.       printf("seekdir(4, SEEK_SET) returned %p\n", dstruct = seekdir(dirp,
  47.             4, SEEK_SET));
  48.       printf("%3d - %s\n", dirp->dd_loc, dstruct->NAME);
  49.       printf("seekdir(4, SEEK_CUR) returned %p\n", dstruct = seekdir(dirp,
  50.             4, SEEK_CUR));
  51.       printf("%3d - %s\n", dirp->dd_loc, dstruct->NAME);
  52.       printf("seekdir(-1, SEEK_CUR) returned %p\n", dstruct = seekdir(dirp,
  53.             -1, SEEK_CUR));
  54.       printf("%3d - %s\n", dirp->dd_loc, dstruct->NAME);
  55.       printf("seekdir(1, SEEK_CUR) returned %p\n", dstruct = seekdir(dirp,
  56.             1, SEEK_CUR));
  57.       printf("%3d - %s\n", dirp->dd_loc, dstruct->NAME);
  58.       printf("seekdir(0, SEEK_END) returned %p\n", dstruct = seekdir(dirp,
  59.             0, SEEK_END));
  60.       printf("%3d - %s\n", dirp->dd_loc, dstruct->NAME);
  61.       printf("seekdir(-1, SEEK_END) returned %p\n", dstruct = seekdir(dirp,
  62.             -1, SEEK_END));
  63.       printf("%3d - %s\n", dirp->dd_loc, dstruct->NAME);
  64.       printf("seekdir(-4, SEEK_END) returned %p\n", dstruct = seekdir(dirp,
  65.             -4, SEEK_END));
  66.       printf("%3d - %s\n", dirp->dd_loc, dstruct->NAME);
  67.       closedir(dirp);
  68. }
  69.  
  70. void main(int argc, char *argv[])
  71. {
  72.       int i;
  73.       char *mask = NULL, *dirname;
  74.  
  75.       if (1 < argc)
  76.             dirname = argv[1];
  77.       else  dirname = ".";
  78.  
  79.       if (2 < argc)
  80.             mask = argv[2];
  81.       printf("Calling dumpdir(%s, %s)\n\n", dirname, mask);
  82.       dumpdir(dirname, mask);
  83. }
  84.